/**
 * 判断给定的树是否为平衡二叉树
 * 思想：
 * 递归计算两颗子树的高度，比较两颗子树的高度，如果相差大于1，那么就false
 */

#include"BiTree.h"
#include<math.h>
#include<stdlib.h>
void judge_avl(BiTree *bt,int &blalance,int &h){
    //左右子树是否平衡，左右子树的高度
    //因为要返回的数据比较多，这里用的是指针
    int bl=0,br=0,hl=0,hr=0;
    if(bt==nullptr){//空姐点
        h=0;
        blalance=1;
    }else if(bt->left==nullptr&&bt->right==nullptr){//叶子
        h=1;
        blalance=1;
    }else{
        judge_avl(bt->left,bl,hl);
        judge_avl(bt->right,br,hr);
        h=(hl>hr?hl:hr)+1;
        if(abs(hl-hr)<2){
            blalance=bl&&br;//如果左右都平衡，那么本树平衡
        }else{
            blalance=0;
        }
    }

}